package com.study.spark.scala.chapter05

object Scala08_Function {
  def main(args: Array[String]): Unit = {
    // TODO 函数式编程 - 递归
    // 阶乘
    // 1.Scala要求递归函数必须声明返回值类型，无法推断
    // 2.递归函数自己调用自己
    // 3.函数必须要有出口:跳出递归的逻辑
    // java.lang.StackOverflowError栈滚动错误 而栈内存溢出和线程有关
    // 4.递归函数在调用时传递的参数之间要有关系
    def myRecursion(num :Int): Int ={
      if (num<1){
        1
      }else{
        num * myRecursion(num-1)
      }
    }
    println(myRecursion(5))


  }

}
  